Selecting advertisements using same session queries

ABSTRACT

Techniques are described herein for selecting an advertisement using same session queries. Each occurrence of a query is referred to as a query instance. When a query instance is received from a user, that query instance and other query instances that were received from the user prior to that query instance (i.e., historical query instances) are taken into consideration to select an advertisement to be provided to the user. The query instance in response to which the advertisement is to be provided and the historical query instances that are received at respective time instances that do not precede a threshold time instance are referred to collectively as a session of the user. Accordingly, the session of the user may be described generally as a collection of query instances that are most recently received from the user.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to online advertising.

2. Background

Certain advertisement (“ad”) networks enable ads (e.g., contextual ads,sponsored ads, display ads, etc.) to be served to users who visit theWeb sites of publishers that are participating in the ad network.Advertisers generate the ads and buy placements (a.k.a. inventory) forthose ads on the publishers' Web sites usually based on the anticipatedaudiences for those sites and/or the content of those sites. A placementrepresents a publisher's agreement to serve a trafficked (i.e.,specified) ad to users when the users visit the publisher's site. Thepublisher often serves the trafficked ad contemporaneously with othercontent associated with the publisher's site. For instance, sponsoredsearch advertising systems commonly serve sponsored ads (e.g., sponsoredsearch results) to users who enter queries on search engine websites,often alongside algorithmic search results that are provided in responseto those queries.

Ad networks typically include ad serving systems that determine whichadvertisements are to be provided to users. In conventional ad networks,when a publisher receives a page view or a search query from a user, thepublisher sends an ad call to an ad serving system. An ad call is arequest for an advertisement. The ad serving system selects anadvertisement from an ad inventory based on various factors. The querythat is used by the ad serving system to select the advertisementdepends on the configuration of the ad serving system. The advertisementtraditionally is selected based on a single query of the user. Forexample, the ad serving system may be configured to select theadvertisement based on the user's most recent query. The ad servingsystem then sends the advertisement to the publisher, so that thepublisher can serve the advertisement to the user.

Selecting an advertisement based on a single query of a user may resultin selection of a marginally relevant (or irrelevant) advertisement. Forexample, the search query may include uncommon terminology (e.g., aproduct model number) that may result in few matches from the adinventory. In another example, the query may be navigational in nature,meaning that the query is provided by the user in an effort to navigateto a particular Web destination. In yet another example, the query maybe inherently ambiguous (e.g., may include relatively few terms) anddifficult to accurately match advertisements against. Moreover, searchengine users typically use multiple queries that are spread over time toobtain information that they are seeking.

BRIEF SUMMARY OF THE INVENTION

Various approaches are described herein for, among other things,selecting an advertisement using same session queries. Each occurrenceof a query is referred to as a query instance. When a query instance isreceived from a user, that query instance and other query instances thatwere received from the user prior to that query instance (i.e.,historical query instances) are taken into consideration to select anadvertisement to be provided to the user. The query instance in responseto which the advertisement is to be provided and the historical queryinstances that are received at respective time instances that do notprecede a threshold time instance are referred to collectively as asession of the user. Accordingly, the session of the user may bedescribed generally as a collection of query instances that are mostrecently received from the user.

Features are generated based on the query instances that are included inthe session of the user. A feature of a query instance includesinformation regarding the query instance. Some example types of featuresinclude but are not limited to a keyword feature, a key phrase feature,a bid phrase feature, etc. A keyword feature of a query instancespecifies a word that is included in the query instance. A key phrasefeature of a query instance specifies two or more adjacent words in thequery instance. A bid phrase feature of a query instance specifies a bidphrase that is associated with the query instance. A bid phrase is aphrase that is intended to trigger a specified advertisement. The bidphrase that is associated with the query instance need not necessarilybe included in the query instance. For instance, the bid phrase may begenerated or derived based on the query instance. Weights are assignedto the respective features based on recency of the query instances onwhich the respective features are based. An advertisement is selected tobe provided to the user based on the features and the weights that areassigned to those features.

An example method of selecting an advertisement is described. Inaccordance with this example method, first features are generated basedon a first query instance that is received from a user at a first timeinstance. First weights are assigned to the respective first features.Second features are generated based on historical query instances thatare received from the user at respective historical time instances thatprecede the first time instance. Second weights are assigned to therespective second features. Each second weight is based on a duration ofa period of time between a reference time instance and the historicaltime instance that corresponds to the historical query instance on whichthe respective second feature is based. Each of the second weights iscompared to a threshold weight to determine whether the respectivesecond weight is less than the threshold weight. The second features areupdated to not include each second feature to which a respective secondweight is assigned that is less than the threshold weight. The secondweights are updated to not include second weights that are less than thethreshold weight. The first and second features are combined to providethird features. The first and second weights are combined to providethird weights that correspond to the respective third features. Anadvertisement is selected to be provided to the user based on the thirdfeatures and the respective third weights in response to the first queryinstance.

Another example method of selecting an advertisement is described. Inaccordance with this example method, first features are generated basedon a first query instance that is received from a user at a first timeinstance. First weights are assigned to the respective first features.Each historical time instance at which a respective historical queryinstance is received from the user is compared to a threshold timeinstance to determine designated query instances. The designated queryinstances include the historical query instances except historical queryinstances that are received from the user at historical time instancesthat precede the threshold time instance. The historical time instancesprecede the first time instance. Second features are generated based onthe designated query instances. Second weights are assigned to therespective second features. Each of the second weights is based on aduration of a period of time between a reference time instance and thehistorical time instance that corresponds to the designated queryinstance on which the respective second feature is based. The first andsecond features are combined to provide third features. The first andsecond weights are combined to provide third weights that correspond tothe respective third features. An advertisement is selected to beprovided to the user based on the third features and the respectivethird weights in response to the first query instance.

An example system is described that includes a feature generator, aweight assignment module a weight comparison module, a feature updatemodule, a weight update module, a feature combination module, a weightcombination module, and an ad selection module. The feature generator isconfigured to generate first features based on a first query instancethat is received from a user at a first time instance. The featuregenerator is further configured to generate second features based onhistorical query instances that are received from the user at respectivehistorical time instances that precede the first time instance. Theweight assignment module is configured to assign first weights to therespective first features. The weight assignment module is furtherconfigured to assign second weights to the respective second features.Each of the second weights is based on a duration of a period of timebetween a reference time instance and the historical time instance thatcorresponds to the historical query instance on which the respectivesecond feature is based. The weight comparison module is configured tocompare each of the second weights to a threshold weight to determinewhether the respective second weight is less than the threshold weight.The feature update module is configured to update the second features tonot include each second feature to which a respective second weight isassigned that is less than the threshold weight. The weight updatemodule is configured to update the second weights to not include secondweights that are less than the threshold weight. The feature combinationmodule is configured to combine the first and second features to providethird features. The weight combination module is configured to combinethe first and second weights to provide third weights that correspond tothe respective third features. The ad selection module is configured toselect an advertisement to be provided to the user based on the thirdfeatures and the respective third weights in response to the first queryinstance.

Another example system is described that includes a time comparisonmodule, a feature generator, a weight assignment module, a featurecombination module, a weight combination module, and an ad selector. Thetime comparison module is configured to compare each historical timeinstance at which a respective historical query instance is receivedfrom a user to a threshold time instance to determine designated queryinstances. The designated query instances include the historical queryinstances except historical query instances that are received from theuser at historical time instances that precede the threshold timeinstance. The feature generator is configured to generate first featuresbased on a first query instance that is received from the user at afirst time instance. The feature generator is further configured togenerate second features based on the designated query instances. Thehistorical time instances precede the first time instance. The weightassignment module is configured to assign first weights to therespective first features. The weight assignment module is furtherconfigured to assign second weights to the respective second features.Each of the second weights is based on a duration of a period of timebetween a reference time instance and the historical time instance thatcorresponds to the designated query instance on which the respectivesecond feature is based. The feature combination module is configured tocombine the first and second features to provide third features. Theweight combination module is configured to combine the first and secondweights to provide third weights that correspond to the respective thirdfeatures. The ad selection module is configured to select anadvertisement to be provided to the user based on the third features andthe respective third weights in response to the first query instance.

Further features and advantages of the disclosed technologies, as wellas the structure and operation of various embodiments, are described indetail below with reference to the accompanying drawings. It is notedthat the invention is not limited to the specific embodiments describedherein. Such embodiments are presented herein for illustrative purposesonly. Additional embodiments will be apparent to persons skilled in therelevant art(s) based on the teachings contained herein.

BRIEF DESCRIPTION OF THE DRAWINGS/FIGURES

The accompanying drawings, which are incorporated herein and form partof the specification, illustrate embodiments of the present inventionand, together with the description, further serve to explain theprinciples involved and to enable a person skilled in the relevantart(s) to make and use the disclosed technologies.

FIG. 1 is a block diagram of an example advertisement (“ad”) network inaccordance with an embodiment described herein.

FIGS. 2A-2B depict respective portions of a flowchart of an examplemethod for selecting an advertisement in accordance with an embodimentdescribed herein.

FIGS. 3A-3C depict respective portions of a flowchart of another examplemethod for selecting an advertisement in accordance with an embodimentdescribed herein.

FIG. 4 depicts a flowchart of yet another example method for selectingan advertisement in accordance with embodiments described herein.

FIG. 5 is a block diagram of an example implementation of an ad selectorshown in FIG. 1 in accordance with an embodiment described herein.

FIGS. 6 and 8 show some example advertisements that are selected to beprovided to a user in response to respective queries that are receivedfrom the user in accordance with embodiments described herein.

FIG. 7 illustrates absence of advertisements when same session queriesare not used to select advertisements in accordance with an embodimentdescribed herein.

FIG. 9 is a block diagram of a computer in which embodiments may beimplemented.

The features and advantages of the disclosed technologies will becomemore apparent from the detailed description set forth below when takenin conjunction with the drawings, in which like reference charactersidentify corresponding elements throughout. In the drawings, likereference numbers generally indicate identical, functionally similar,and/or structurally similar elements. The drawing in which an elementfirst appears is indicated by the leftmost digit(s) in the correspondingreference number.

DETAILED DESCRIPTION OF THE INVENTION I. Introduction

The following detailed description refers to the accompanying drawingsthat illustrate exemplary embodiments of the present invention. However,the scope of the present invention is not limited to these embodiments,but is instead defined by the appended claims. Thus, embodiments beyondthose shown in the accompanying drawings, such as modified versions ofthe illustrated embodiments, may nevertheless be encompassed by thepresent invention.

References in the specification to “one embodiment,” “an embodiment,”“an example embodiment,” or the like, indicate that the embodimentdescribed may include a particular feature, structure, orcharacteristic, but every embodiment may not necessarily include theparticular feature, structure, or characteristic. Moreover, such phrasesare not necessarily referring to the same embodiment. Furthermore, whena particular feature, structure, or characteristic is described inconnection with an embodiment, it is submitted that it is within theknowledge of one skilled in the art to implement such feature,structure, or characteristic in connection with other embodimentswhether or not explicitly described.

Example embodiments are capable of selecting an advertisement using samesession queries. Each occurrence of a query is referred to as a queryinstance. When a query instance is received from a user, that queryinstance and other query instances that were received from the userprior to that query instance (i.e., historical query instances) aretaken into consideration to select an advertisement to be provided tothe user. The query instance in response to which the advertisement isto be provided and the historical query instances that are received atrespective time instances that do not precede a threshold time instanceare referred to collectively as a session of the user. Accordingly, thesession of the user may be described generally as a collection of queryinstances that are most recently received from the user.

Features are generated based on the query instances that are included inthe session of the user. A feature of a query instance includesinformation regarding the query instance. Some example types of featuresinclude but are not limited to a keyword feature, a key phrase feature,a bid phrase feature, etc. A keyword feature of a query instancespecifies a word that is included in the query instance. A key phrasefeature of a query instance specifies two or more adjacent words in thequery instance. A bid phrase feature of a query instance specifies a bidphrase that is associated with the query instance. A bid phrase is aphrase that is intended to trigger a specified advertisement. The bidphrase that is associated with the query instance need not necessarilybe included in the query instance. For instance, the bid phrase may begenerated or derived based on the query instance. Weights are assignedto the respective features based on recency of the query instances onwhich the respective features are based. An advertisement is selected tobe provided to the user based on the features and the weights that areassigned to those features.

Techniques described herein have a variety of benefits as compared toconventional techniques for selecting an advertisement to be provided toa user. For example, by selecting an advertisement using same sessionqueries, intent of a user may be more efficiently and/or more accuratelydisambiguated. Techniques described herein may provide a richer and/ormore diverse ad experience. The techniques may use a combination ofquery features that is more monetizable than a combination of featuresthat is based only on the user's most recent query. The techniques mayprovide an opportunity to cross-sell relevant advertisements.

In one example scenario, a user may have an overall goal of planning avacation trip to Las Vegas. A variety of tasks may be performed toachieve the overall goal. For example, the user may book flights,hotels, car rentals, find restaurants, and so on. To accomplish thesetasks, the user may issue the following search queries in successionwithin a common session:

1) cheap flights to Las Vegas

2) Las Vegas hotels

3) car rentals

4) restaurants in strip.

If these queries are treated independently, the user may see ads onlyfor flights, hotels, car rentals, or restaurants in response to eachrespective query. Moreover, the car rental ads that the user sees may belocal car rental ads that are based on the user's location, because nogeographic context is given in the user's search query of “car rentals”.Furthermore, the independent selection of ads in response to the searchquery of “restaurants in strip” may not be capable of correlating“strip” with Las Vegas, resulting in selection of ads for localrestaurants based on the user's location. Accordingly, treating thequeries independently may not provide a rich user experience,considering that the user is attempting to accomplish the overall goalby tailoring individual search queries to complete the associated tasks.

However, if ads are selected using same session queries, context fromprevious queries of the session is incorporated into the selection ofads for the present query. For example, when ads are selected for eachof the “car rental” and “restaurants in strip” search queries, thephrase “Las Vegas” from the “cheap flights to Las Vegas” and “Las Vegashotels” search queries is taken into consideration for selection of theads. For instance, an ad that offers a flight and hotel package deal toLas Vegas may be selected in response to the query “Las Vegas hotels”.An ad that offers car rentals at the Las Vegas airport may be selectedin response to the query “car rentals”.

Moreover, selecting the ads using same session queries facilitatescross-selling of relevant ads. For instance, ads regarding Las Vegashotels may be shown to the user in response to the user's “car rentals”and/or “restaurants in strip” search queries.

In another example scenario, a user may be looking for home-basedpart-time or full-time opportunities. To achieve this goal, the user mayissue the following search queries in succession within a commonsession:

1) work from home

2) home based business

3) home based working moms

4) making money online

5) cheap money online.

The first three search queries of this session indicate that the userintends to find a home-based business opportunity. The intention of thelast two search queries shifts toward online opportunities, but theoriginal intention is still relevant. By using same session queries, adetermination may be made that the user is looking for some kind ofonline-oriented work-from-home opportunity for a mom.

II. Example Embodiments

FIG. 1 is a block diagram of an example advertisement (“ad”) network inaccordance with an embodiment described herein. Generally speaking, adnetwork 100 operates to serve ads (e.g., contextual ads, sponsored ads,display ads, etc.) provided by advertisers to sites (e.g., Web sites)published by publishers when such sites are accessed by certain users ofthe network, thereby delivering the ads to the users. For instance, theads may be served in response to search queries that are received fromthe users. As shown in FIG. 1, ad network 100 includes a plurality ofuser systems 102A-102M, a plurality of publisher servers 104A-104N, anad serving system 106, and at least one advertiser system 108.Communication among user systems 102A-102M, publisher servers 104A-104N,ad serving system 106, and advertiser system 108 is carried out over anetwork using well-known network communication protocols. The networkmay be a wide-area network (e.g., the Internet), a local area network(LAN), another type of network, or a combination thereof.

User systems 102A-102M are computers or other processing systems, eachincluding one or more processors, that are capable of communicating withany one or more of publisher servers 104A-104N. For example, each ofuser systems 102A-102M may include a client that enables a user who owns(or otherwise has access to) the user system to access sites (e.g., Websites) that are hosted by publisher servers 104A-104N. For instance, aclient may be a Web crawler, a Web browser, a non-Web-enabled client, orany other suitable type of client. By way of example, each of usersystems 102A-102M is shown in FIG. 1 to be communicatively coupled topublisher 1 server(s) 104A for the purpose of accessing a site publishedby publisher 1. Persons skilled in the relevant art(s) will recognizethat each of user systems 102A-102M is capable of connecting to any ofpublisher servers 104A-104N for accessing the sites hosted thereon.

Publisher servers 104A-104N are computers or other processing systems,each including one or more processors, that are capable of communicatingwith user systems 102A-102M. Each of publisher servers 104A-104N isconfigured to host a site (e.g., a Web site) published by acorresponding publisher 1-N so that such site is accessible to users ofnetwork 100 via user systems 102A-102M. Each of publisher servers104A-104N is further configured to serve advertisements (e.g.,contextual ads, sponsored ads, display ads, etc.) to users of network100 when those users access a Web site that is hosted by the respectivepublisher server.

Publisher servers 104A-104N are further configured to execute softwareprograms that provide information to users in response to receivingrequests, such as hypertext transfer protocol (HTTP) requests, fromusers, instant messaging (IM) applications, or web-based email. Forexample, the information may include Web pages, images, other types offiles, output of executables residing on the publisher servers, IM chatsessions, emails, etc. In accordance with this example, the softwareprograms that are executing on publisher servers 104A-104N may provideWeb pages that include interface elements (e.g., buttons, hyperlinks,etc.) that a user may select for accessing the other types ofinformation. The Web pages may be provided as hypertext markup language(HTML) documents and objects (e.g., files) that are linked therein, forexample.

One type of software program that may be executed by any one or more ofpublisher servers 104A-104N is a Web search engine. For instance,publisher 1 server(s) 104A is shown to include search engine module 112,which is configured to execute a Web search engine. Search engine module112 is capable of searching for information on the World Wide Web (WWW)based on queries that are provided by users. For example, search enginemodule 112 may search among publisher servers 104A-104N for requestedinformation. Upon discovering instances of information that are relevantto a user's query, search engine module 112 ranks the instances based ontheir relevance to the query. Search engine module 112 provides a listthat includes each of the instances in an order that is based on therespective rankings of the instances. The list may be referred to as thesearch results corresponding to the query.

Search engine module 112 is configured to provide an ad call to adserving system 106, upon receiving a query from a user, to request anadvertisement (e.g., a contextual ad, a sponsored ad, a display ad,etc.) to be provided to the user. Search engine module 112 forwards auser identifier that corresponds to (e.g., that specifies) the user toad serving system 106. For example, the user identifier may include abrowser cookie of the user or information that is included in thebrowser cookie. In another example, the user identifier may include ausername and/or an Internet Protocol (IP) address that is associatedwith the user. Search engine module 112 may incorporate the useridentifier in the ad call or may provide the user identifier in additionto the ad call.

It will be recognized that a search engine module (e.g., search enginemodule 112) need not necessarily be included in publisher server(s) inorder for the publisher server(s) to provide an ad call to ad servingsystem 1016. For instance, any one or more of publisher servers104A-104N may provide an ad call to ad serving system 106 withoututilizing a search engine module.

Ad serving system 106 is a computer or other processing system,including one or more processors, that is capable of servingadvertisements (e.g., contextual ads, sponsored ads, display ads, etc.)that are received from advertiser system 108 to each of publisherservers 104A-104N when the sites hosted by such servers are accessed bycertain users, thereby facilitating the delivery of such advertisementsto the users. For instance, ad serving system 106 may serveadvertisement(s) to a publisher server 104 in response to an ad callthat is received from that publisher server 104. The ad call may beinitiated in response to a query instance that is provided by a user. Adserving system 106 may select an appropriate advertisement to beprovided to the user based on a user identifier that is received fromsearch engine module 112.

Ad serving system 106 includes an ad selector 110. Ad selector 110 isconfigured to select an advertisement (e.g., a contextual ad, asponsored ad, a display ad, etc.) using historical query instances of auser that are included in the same session of the user that includes thequery instance in response to which the advertisement is to be provided.Ad selector 110 receives an ad call that is based on the user's queryinstance from a publisher server 104. The ad call requests anadvertisement to be displayed to the user. Ad selector 110 receives auser identifier that corresponds to the user from the publisher server104. The user identifier may be included in the ad call or may bereceived in addition to the ad call. Ad selector 110 may use the useridentifier to determine historical query instances of the user. Forinstance, ad selector 110 may access a look-up table and compare theuser identifier with information (e.g., metadata) stored in the look-uptable that is associated with query instances to determine which of thequery instances are historical query instances of the user.

Ad selector 110 generates a first set of features (e.g., keywords and/orkey phrases) based on the query instance that triggers the ad call(i.e., the query instance in response to which the advertisement is tobe provided). Ad selector 110 generates a second set of features basedon the historical query instances of the user. Ad selector 110 assigns arespective weight to each feature that is included in the first set offeatures and to each feature that is included in the second set offeatures. Each of the weights that is assigned to a respective featurein the second set is based on a recency of the historical query instanceon which the respective feature is based. Ad selector 110 selects anadvertisement to be provided to the user based on the features in thefirst set and their respective weights and the features in the secondset and their respective weights. Techniques for selecting anadvertisement are described in further detail below with reference toFIGS. 2A-2B, 3A-3C, and 4-8.

Advertiser system 108 is a computer or other processing system,including one or more processors, that is capable of providingadvertisements (e.g., contextual ads, sponsored ads, display ads, etc.)to ad serving system 106, so that the advertisements may be served topublisher servers 104A-104N when the sites hosted by the respectiveservers are accessed by certain users. Although one advertiser system108 is depicted in FIG. 1, persons skilled in the relevant art(s) willrecognize that any number of advertiser systems may be communicativelycoupled to ad serving system 106.

Although advertiser system 108 and user systems 102A-102M are depictedas desktop computers in FIG. 1, persons skilled in the relevant art(s)will appreciate that advertiser system 108 and user systems 102A-102Mmay include any browser-enabled system or device, including but notlimited to a laptop computer, a tablet computer, a personal digitalassistant, a cellular telephone, or the like.

FIGS. 2A-2B depict respective portions of a flowchart 200 of an examplemethod for selecting an advertisement in accordance with an embodimentdescribed herein. FIGS. 3A-3C depict respective portions of a flowchart300 of another example method for selecting an advertisement inaccordance with an embodiment described herein. FIG. 4 depicts aflowchart 400 of yet another example method for selecting anadvertisement in accordance with embodiments described herein.Flowcharts 200, 300, and 400 may be performed by ad selector 110 of adnetwork 100 shown in FIG. 1, for example. For illustrative purposes,flowcharts 200, 300, and 400 are described with respect to an adselector 500 shown in FIG. 5, which is an example of an ad selector 110,according to an embodiment. As shown in FIG. 5, ad selector 500 includesa feature generator 502, a weight assignment module 504, a timecomparison module 506, an instance update module 508, a redundancydetermination module 510, a feature update module 512, a weight updatemodule 514, a weight comparison module 516, a feature combination module518, a weight combination module 520, an ad selection module 522, anumber determination module 524, and a number comparison module 526.Further structural and operational embodiments will be apparent topersons skilled in the relevant art(s) based on the discussion regardingflowcharts 200, 300, and 400.

As shown in FIG. 2, the method of flowchart 200 begins at step 202. Instep 202, first features are generated based on a first query instancethat is received from a user at a first time instance. The firstfeatures may include any of a variety of types of features, includingbut not limited to keyword feature(s), key phrase feature(s), bid phrasefeature(s), etc. In an example implementation, feature generator 502generates the first features.

At step 204, first weights are assigned to the respective firstfeatures. In an example implementation, weight assignment module 504assigns the first weights to the respective first features.

At step 206, each historical time instance at which a respectivehistorical query instance is received from the user is compared to athreshold time instance to determine whether the respective historicaltime instance precedes the threshold time instance. For example, thethreshold time instance may be defined to be a time instance thatprecedes a current time instance by a specified amount of time. Inanother example, the threshold time instance may be defined to be a settime instance that does not vary based on the current time. In anexample implementation, time comparison module 506 compares eachhistorical time instance at which a respective historical query instanceis received from the user to the threshold time instance to determinewhether the respective historical time instance precedes the thresholdtime instance.

At step 208, the historical query instances are updated to not includeeach historical query instance that is received from the user at arespective historical time instance that precedes the threshold timeinstance. It will be recognized that updating the historical queryinstances is intended to mean updating which of the query instances areto be taken into consideration for selecting an advertisement to beprovided to the user. In accordance with step 208, historical queryinstances that are received from the user at historical time instancesthat precede the threshold time instance are not to be taken intoconsideration for selecting the advertisement. For instance, suchhistorical query instances may be ignored. It will be further recognizedthat none of the historical query instances necessarily need to bedeleted. However, in some example embodiments, a garbage collectionoperation is performed to delete each historical query instance that isreceived from the user at a respective historical time instance thatprecedes the threshold time instance from a session cache that storesthe historical query instances. In an example implementation, instanceupdate module 508 updates the historical query instances.

At step 210, second features are generated based on the historical queryinstances that are received from the user at respective historical timeinstances that precede the first time instance. The second features mayinclude any of a variety of types of features, including but not limitedto keyword feature(s), key phrase feature(s), bid phrase feature(s),etc. In an example implementation, feature generator 502 generates thesecond features.

At step 212, second weights are assigned to the respective secondfeatures. Each second weight is based on a duration of a period of timebetween a reference time instance and the historical time instance thatcorresponds to the historical query instance on which the respectivesecond feature is based. For example, the reference time instance may bea current time instance, though the scope of the example embodiments isnot limited in this respect. In an example implementation, weightassignment module 504 assigns the second weights to the respectivesecond features.

At step 214, a determination is made that the second features include atleast one redundant feature. The second features include multipleinstances of each redundant feature. In an example implementation,redundancy determination module 510 determines that the second featuresinclude at least one redundant feature.

At step 216, the second features are updated to consolidate the multipleinstances of each redundant feature into a respective commonnon-redundant feature. In an example implementation, feature updatemodule 512 updates the second features to consolidate the multipleinstances of each redundant feature into a respective commonnon-redundant feature.

At step 218, the second weights are updated to replace the weights ofthe respective instances of each redundant feature with a respectivecumulative weight that is equal to a sum of the weights of therespective instances of the respective redundant feature. In an exampleimplementation, weight update module 514 updates the second weights toreplace the weights of the respective instances of each redundantfeature with a respective cumulative weight that is equal to a sum ofthe weights of the respective instances of the respective redundantfeature. Upon completion of step 218, flow continues to step 220, whichis shown in FIG. 2B.

At step 220, each of the second weights is compared to a thresholdweight to determine whether the respective second weight is less thanthe threshold weight. In an example implementation, weight comparisonmodule 516 compares each of the second weights to the threshold weightto determine whether the respective second weight is less than thethreshold weight.

At step 222, the second features are updated to not include each secondfeature to which a respective second weight is assigned that is lessthan the threshold weight. It will be recognized that updating thesecond features is intended to mean updating which of the secondfeatures are to be taken into consideration for selecting anadvertisement to be provided to the user. In accordance with step 222,second features to which respective second weights are assigned that areless than the threshold weight are not to be taken into considerationfor selecting the advertisement. For instance, such second features maybe ignored. None of the second features necessarily need to be deleted,though each of the second features to which a respective second weightis assigned that is less than the threshold weight may be deleted duringa garbage collection operation. In an example implementation, featureupdate module 512 updates the second features to not include each secondfeature to which a respective second weight is assigned that is lessthan the threshold weight.

At step 224, the second weights are updated to not include secondweights that are less than the threshold weight. It will be recognizedthat updating the second weights is intended to mean updating which ofthe second weights are to be taken into consideration for selecting anadvertisement to be provided to the user. In accordance with step 224,second weights that are less than the threshold weight are not to betaken into consideration for selecting the advertisement. For instance,such second weights may be ignored. None of the second weightsnecessarily need to be deleted, though each of the second weights thatis less than the threshold weight may be deleted during a garbagecollection operation. In an example implementation, weight update module514 updates the second weights to not include second weights that areless than the threshold weight.

At step 226, the first and second features are combined to provide thirdfeatures. In an example implementation, feature combination module 518combines the first and second features to provide the third features.

At step 228, the first and second weights are combined to provide thirdweights that correspond to the respective third features. In an exampleimplementation, weight combination module 520 combines the first andsecond weights to provide the third weights.

At step 230, a determination is made that the third features include atleast one redundant feature. The third features include multipleinstances of each redundant feature. In an example implementation,redundancy determination module 510 determines that the third featuresinclude at least one redundant feature.

At step 232, the third features are updated to consolidate the multipleinstances of each redundant feature into a respective commonnon-redundant feature. In an example implementation, feature updatemodule 512 updates the third features to consolidate the multipleinstances of each redundant feature into a respective commonnon-redundant feature.

At step 234, the third weights are updated to replace the weights of therespective instances of each redundant feature with a respectivecumulative weight that is equal to a sum of the weights of therespective instances of that redundant feature. In an exampleimplementation, weight update module 514 updates the third weights toreplace the weights of the respective instances of each redundantfeature with a respective cumulative weight that is equal to a sum ofthe weights of the respective instances of that redundant feature.

At step 236, an advertisement is selected to be provided to the userbased on the third features and the respective third weights in responseto the first query instance. For example, the third weights may indicatean extent to which the respective third features are to be taken intoconsideration for purposes of selecting the advertisement. In an exampleimplementation, ad selection module 522 selects the advertisement to beprovided to the user.

In some example embodiments, one or more steps 202, 204, 206, 208, 210,212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, and/or 236of flowchart 200 may not be performed. Moreover, steps in addition to orin lieu of steps 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222,224, 226, 228, 230, 232, 234, and/or 236 may be performed.

As shown in FIG. 3, the method of flowchart 300 begins at step 302. Instep 302, first features are generated based on a first query instancefor each user of a plurality of users. Each first query instance isreceived from a respective user at a respective first time instance. Forexample, first features F1A may be generated for user A of the pluralityof users based on a first query instance Q1A of user A, which isreceived at a respective first time instance T1A; first features F1B maybe generated for user B of the plurality of users based on a first queryinstance Q1B of user B, which is received at a respective first timeinstance T1B; first features F1C may be generated for user C of theplurality of users based on a first query instance Q1C of user C, whichis received at a respective first time instance T1C, and so on. In anexample implementation, feature generator 502 generates the firstfeatures.

At step 304, for each user, respective first weights are assigned to therespective first features. In accordance with the example mentionedabove, first weights W1A may be assigned to respective first featuresF1A; first weights W1B may be assigned to respective first features F1B;first weights W1C may be assigned to respective first features F1C, andso on. In an example implementation, weight assignment module 504assigns the respective first weights to the respective first featuresfor each user.

At step 306, for each user, respective second features are generatedbased on respective historical query instances that are received fromthat user at respective historical time instances that precede therespective first time instance. In accordance with the example mentionedabove, second features F2A may be generated for user A based onhistorical query instances H1A that are received from user A atrespective historical time instances TH_A that precede the respectivefirst time instance T1A; second features F2B may be generated for user Bbased on historical query instances H1B that are received from user B atrespective historical time instances TH_B that precede the respectivefirst time instance T1B; second features F2C may be generated for user Cbased on historical query instances H1C that are received from user C atrespective historical time instances TH_C that precede the respectivefirst time instance T1C, and so on. In an example implementation,feature generator 502 generates the respective second features for eachuser.

At step 308, for each user, respective second weights are assigned tothe respective second features. Each second weight is based on aduration of a period of time between a reference time instance and thehistorical time instance that corresponds to the historical queryinstance on which the respective second feature is based. In accordancewith the example mentioned above, second weights W2A may be assigned torespective second features F2A; second weights W2B may be assigned torespective second features F2B; second weights W2C may be assigned torespective second features F2C, and so on. In an example implementation,weight assignment module 504 assigns the respective second weights tothe respective second features for each user.

At step 310, for each user, each second weight that corresponds to thatuser is compared to a threshold weight to determine whether therespective weight is less than the threshold weight. In accordance withthe example mentioned above, each of the second weights W2A for user A,each of the second weights W2B for user B, each of the second weightsS2C for user C, and so on may be compared to the threshold weight. In anexample implementation, weight comparison module 516 compares eachsecond weight that corresponds to each user to a threshold weight todetermine whether the respective weight is less than the thresholdweight.

At step 312, for each user, the second features that correspond to thatuser are updated to not include each feature to which a respectivesecond weight is assigned that is less than the threshold weight. Inaccordance with the example mentioned above, the second features F2Awhich correspond to user A, the second features F2B which correspond touser B, the second features F2C which correspond to user C, and so onmay be updated to not include features to which respective secondweights W2A, W2B, W2C, etc. are assigned that are less than thethreshold weight. In an example implementation, feature update module512 updates the second features that correspond to each user to notinclude each feature to which a respective second weight is assignedthat is less than the threshold weight. Upon completion of step 312,flow continues to step 314, which is shown in FIG. 3B.

At step 314, for each user, the second weights that correspond to thatuser are updated to not include second weights that are less than thethreshold weight. In accordance with the example mentioned above, thesecond weights W2A which correspond to user A, the second weights W2Bwhich correspond to user B, the second weights W2C which correspond touser C, and so on may be updated to not include respective secondweights W2A, W2B, W2C, etc. that are less than the threshold weight. Inan example implementation, weight update module 514 updates the secondweights that correspond to each user to not include second weights thatare less than the threshold weight.

At step 316, for each user, the first and second features thatcorrespond to that user are combined to provide third features thatcorrespond to that user. In accordance with the example mentioned above,features F1A and F2A may be combined to provide third features F3A,which correspond to user A; features F1B and F2B may be combined toprovide third features F3B, which correspond to user B; features F1C andF2C may be combined to provide third features F3C, which correspond touser C, and so on. In an example implementation, feature combinationmodule 518 combines the first and second features that correspond toeach user to provide third features that correspond to that user.

At step 318, for each feature that is included in the third featuresthat correspond to a first user of the plurality of users, a number ofthe users is determined for which third features that correspond to therespective users include that feature. In accordance with the examplementioned above, for each of the third features F3A, which correspond touser A, a number of the users A, B, C, etc. for which respective thirdfeatures F3A, F3B, F3C, etc. include that feature may be determined. Inan example implementation, number determination module 524 determinesthe number of the users for each feature that is included in the thirdfeatures that correspond to the first user.

At step 320, the number that is determined for each feature that isincluded in the third features that correspond to the first user iscompared to a number threshold. In accordance with the example mentionedabove, each of the numbers that is determined for each of the respectivethird features F3A may be compared to the number threshold. In anexample implementation, number comparison module 526 compares the numberthat is determined for each feature that is included in the thirdfeatures that correspond to the first user to the number threshold.

At step 322, for each number that is less than the number threshold, thecorresponding feature is removed from the second features thatcorrespond to the first user to provide revised second features. Inaccordance with the example mentioned above, for each number that isless than the number threshold, the corresponding feature may be removedfrom second features F2A, which correspond to user A, to provide revisedsecond features F2 revised. In an example implementation, feature updatemodule 512 removes each feature that corresponds to a number that isless than the number threshold from the second features that correspondto the first user to provide the revised second features.

At step 324, the third features that correspond to the first user areupdated to include a combination of the first features that correspondto the first user and the revised second features. In accordance withthe example mentioned above, third features F3A, which correspond touser A, may be updated to include a combination of features F1A and F2revised. In an example implementation, feature update module 512 updatesthe third features that correspond to the first user to include thecombination of the first features that correspond to the first user andthe revised second features. Upon completion of step 324, flow continuesto step 326, which is shown in FIG. 3C.

At step 326, the second weights that correspond to the first user areupdated to not include weights that are assigned to respective featuresthat are removed from the second features that correspond to the firstuser. In accordance with the example mentioned above, second weightsW2A, which correspond to user A, may be updated to not include weightsthat are assigned to respective features that are removed from secondfeatures F2A. In an example implementation, weight update module 514updates the second weights that correspond to the first user to notinclude weights that are assigned to respective features that areremoved from the second features that correspond to the first user.

At step 328, the first weights that correspond to the first user and thesecond weights that correspond to the first user are combined to providethird weights that correspond to the first user. In accordance with theexample mentioned above, weights W1A and W2A, which correspond to userA, may be combined to provide third weights W3A, which correspond touser A. In an example implementation, weight combination module 520combine the first weights that correspond to the first user and thesecond weights that correspond to the first user to provide the thirdweights that correspond to the first user.

At step 330, the advertisement to be provided to the first user isselected based on the third features that correspond to the first userand the respective third weights in response to the first query instancethat is received from the first user. In accordance with the examplementioned above, the advertisement may be selected to be provided touser A based on third features F3A and third weights W3A in response tothe first query instance Q1A, which is received from user A. In anexample implementation, ad selection module 522 selects theadvertisement to be provided to the first user.

In some example embodiments, one or more steps 302, 304, 306, 308, 310,312, 314, 316, 318, 320, 322, 324, 326, 328, and/or 330 of flowchart 300may not be performed. Moreover, steps in addition to or in lieu of steps302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328,and/or 330 may be performed.

As shown in FIG. 4, the method of flowchart 400 begins at step 402. Instep 402, first features are generated based on a first query instancefor each user of a plurality of users. Each first query instance isreceived from a respective user at a respective first time instance. Inan example implementation, feature generator 502 generates the firstfeatures.

At step 404, for each user, respective first weights are assigned to therespective first features. In an example implementation, weightassignment module 504 assigns the respective first weights to therespective first features for each user.

At step 406, for each user, respective historical time instances atwhich respective historical query instances are received from that userare compared to a threshold time instance to determine designated queryinstances for that user. The designated query instances for each userinclude the historical query instances that are received from that userexcept historical query instances that are received from that user athistorical time instances that precede the threshold time instance. Thehistorical time instances for each user precede the first time instancefor that user. In an example implementation, time comparison module 506compares historical time instances at which respective historical queryinstances are received from each user to the threshold time instance todetermine the designated query instances for that user.

At step 408, for each user, respective second features are generatedbased on the respective designated query instances for that user. In anexample implementation, feature generation module 502 generates therespective second features for each user based on the respectivedesignated query instances for that user.

At step 410, for each user, respective second weights are assigned tothe respective second features. Each second weight is based on aduration of a period of time between a reference time instance and thehistorical time instance that corresponds to the designated queryinstance on which the respective second feature is based. In an exampleimplementation, weight assignment module 504 assigns the respectivesecond weights to the respective second features for each user.

In some example embodiments, one or more steps 402, 404, 406, 408,and/or 410 of flowchart 400 may not be performed. Moreover, steps inaddition to or in lieu of steps 402, 404, 406, 408, and/or 410 may beperformed.

It will be recognized that ad selector 500 may not include one or moreof feature generator 502, weight assignment module 504, time comparisonmodule 506, instance update module 508, redundancy determination module510, feature update module 512, weight update module 514, weightcomparison module 516, feature combination module 518, weightcombination module 520, ad selection module 522, number determinationmodule 524, and/or number comparison module 526. Furthermore, adselector 500 may include modules in addition to or in lieu of featuregenerator 502, weight assignment module 504, time comparison module 506,instance update module 508, redundancy determination module 510, featureupdate module 512, weight update module 514, weight comparison module516, feature combination module 518, weight combination module 520, adselection module 522, number determination module 524, and/or numbercomparison module 526.

Some differences between conventional techniques for selecting ads andtechniques described herein that use same session queries to select adsare illustrated in FIGS. 6-8. The search queries that are described withrespect to FIGS. 6-8 are successive queries that define a session of theuser. FIG. 6 shows some example advertisements 600 that are selected tobe provided to a user in response to the user issuing a query of “LasVegas hotels” in accordance with an embodiment described herein. Assumefor purposes of illustration that the query “Las Vegas hotels” is thefirst query of the user's session. If the user were to issue a secondquery of “restaurants in strip”, the advertisements that are selected tobe provided to the user may differ substantially, depending on whetherthe selection of the advertisements takes into consideration samesession queries. In fact, it is possible that no advertisements may beselected to be provided to the user in response to the second query.

FIG. 7 illustrates absence of advertisements when same session queriesare not used to select advertisements in accordance with an embodimentdescribed herein. As shown in FIG. 7, algorithmic results 700 areprovided to the user in response to the user's second query of“restaurants in strip”, but no advertisements are displayed.

FIG. 8 shows some example advertisements 800 that are selected to beprovided to the user in response to the user's second query of“restaurants in strip” when same session queries are taken intoconsideration in accordance with an embodiment described herein. Inaccordance with this example embodiment, features that are generatedbased on the first query of “Las Vegas hotels” are combined withfeatures that are generated based on the second query of “restaurants instrip”. Advertisements 800 are selected to be provided to the user basedon the combined features.

III. Other Example Embodiments

Ad selector 110, search engine module 112, feature generator 502, weightassignment module 504, time comparison module 506, instance updatemodule 508, redundancy determination module 510, feature update module512, weight update module 514, weight comparison module 516, featurecombination module 518, weight combination module 520, ad selectionmodule 522, number determination module 524, and number comparisonmodule 526 may be implemented in hardware, software, firmware, or anycombination thereof.

For example, ad selector 110, search engine module 112, featuregenerator 502, weight assignment module 504, time comparison module 506,instance update module 508, redundancy determination module 510, featureupdate module 512, weight update module 514, weight comparison module516, feature combination module 518, weight combination module 520, adselection module 522, number determination module 524, and/or numbercomparison module 526 may be implemented as computer program codeconfigured to be executed in one or more processors.

In another example, ad selector 110, search engine module 112, featuregenerator 502, weight assignment module 504, time comparison module 506,instance update module 508, redundancy determination module 510, featureupdate module 512, weight update module 514, weight comparison module516, feature combination module 518, weight combination module 520, adselection module 522, number determination module 524, and/or numbercomparison module 526 may be implemented as hardware logic/electricalcircuitry.

IV. Example Computer Implementation

The embodiments described herein, including systems, methods/processes,and/or apparatuses, may be implemented using well knownservers/computers, such as computer 900 shown in FIG. 9. For instance,elements of example ad network 100, including any of the user systems102A-102M, any of the publisher servers 104A-104N, advertiser system108, and ad serving system 106 depicted in FIG. 1 and elements thereof,each of the steps of flowchart 200 depicted in FIGS. 2A-2B, each of thesteps of flowchart 300 depicted in FIGS. 3A-3C, and each of the steps offlowchart 400 depicted in FIG. 4 can each be implemented using one ormore computers 900.

Computer 900 can be any commercially available and well known computercapable of performing the functions described herein, such as computersavailable from International Business Machines, Apple, Sun, HP, Dell,Cray, etc. Computer 900 may be any type of computer, including a desktopcomputer, a server, etc.

As shown in FIG. 9, computer 900 includes one or more processors (e.g.,central processing units (CPUs)), such as processor 906. Processor 906may include ad selector 110 and/or search engine module 112 of FIG. 1;feature generator 502, weight assignment module 504, time comparisonmodule 506, instance update module 508, redundancy determination module510, feature update module 512, weight update module 514, weightcomparison module 516, feature combination module 518, weightcombination module 520, ad selection module 522, number determinationmodule 524, and/or number comparison module 526 of FIG. 5; or anyportion or combination thereof, for example, though the scope of theembodiments is not limited in this respect. Processor 906 is connectedto a communication infrastructure 902, such as a communication bus. Insome embodiments, processor 906 can simultaneously operate multiplecomputing threads.

Computer 900 also includes a primary or main memory 908, such as arandom access memory (RAM). Main memory has stored therein control logic924A (computer software), and data.

Computer 900 also includes one or more secondary storage devices 910.Secondary storage devices 910 include, for example, a hard disk drive912 and/or a removable storage device or drive 914, as well as othertypes of storage devices, such as memory cards and memory sticks. Forinstance, computer 900 may include an industry standard interface, suchas a universal serial bus (USB) interface for interfacing with devicessuch as a memory stick. Removable storage drive 914 represents a floppydisk drive, a magnetic tape drive, a compact disk drive, an opticalstorage device, tape backup, etc.

Removable storage drive 914 interacts with a removable storage unit 916.Removable storage unit 916 includes a computer useable or readablestorage medium 918 having stored therein computer software 924B (controllogic) and/or data. Removable storage unit 916 represents a floppy disk,magnetic tape, compact disc (CD), digital versatile disc (DVD), Blue-raydisc, optical storage disk, memory stick, memory card, or any othercomputer data storage device. Removable storage drive 914 reads fromand/or writes to removable storage unit 916 in a well known manner.

Computer 900 also includes input/output/display devices 904, such asmonitors, keyboards, pointing devices, etc.

Computer 900 further includes a communication or network interface 920.Communication interface 920 enables computer 900 to communicate withremote devices. For example, communication interface 920 allows computer900 to communicate over communication networks or mediums 922(representing a form of a computer useable or readable medium), such aslocal area networks (LANs), wide area networks (WANs), the Internet,etc. Network interface 920 may interface with remote sites or networksvia wired or wireless connections. Examples of communication interface922 include but are not limited to a modem, a network interface card(e.g., an Ethernet card), a communication port, a Personal ComputerMemory Card International Association (PCMCIA) card, etc.

Control logic 924C may be transmitted to and from computer 900 via thecommunication medium 922.

Any apparatus or manufacture comprising a computer useable or readablemedium having control logic (software) stored therein is referred toherein as a computer program product or program storage device. Thisincludes, but is not limited to, computer 900, main memory 908,secondary storage devices 910, and removable storage unit 916. Suchcomputer program products, having control logic stored therein that,when executed by one or more data processing devices, cause such dataprocessing devices to operate as described herein, represent embodimentsof the invention.

For example, each of the elements of example ad selector 110 and searchengine module 112, each depicted in FIG. 1; feature generator 502,weight assignment module 504, time comparison module 506, instanceupdate module 508, redundancy determination module 510, feature updatemodule 512, weight update module 514, weight comparison module 516,feature combination module 518, weight combination module 520, adselection module 522, number determination module 524, and numbercomparison module 526, each depicted in FIG. 5; each of the steps offlowchart 200 depicted in FIG. 2; each of the steps of flowchart 300depicted in FIG. 3; and each of the steps of flowchart 400 depicted inFIG. 4 can be implemented as control logic that may be stored on acomputer useable medium or computer readable medium, which can beexecuted by one or more processors to operate as described herein.

V. Conclusion

While various embodiments have been described above, it should beunderstood that they have been presented by way of example only, and notlimitation. It will be apparent to persons skilled in the relevantart(s) that various changes in form and details can be made thereinwithout departing from the spirit and scope of the invention. Thus, thebreadth and scope of the present invention should not be limited by anyof the above-described exemplary embodiments, but should be defined onlyin accordance with the following claims and their equivalents.

1. A method comprising: generating a first plurality of features basedon a first query instance that is received from a first user at a firsttime instance; assigning a first plurality of weights to the firstplurality of respective features; generating a second plurality offeatures based on a plurality of historical query instances that arereceived from the first user at a plurality of respective historicaltime instances that precede the first time instance; assigning a secondplurality of weights to the second plurality of respective features,each weight of the second plurality of weights based on a duration of aperiod of time between a reference time instance and the historical timeinstance that corresponds to the historical query instance on which therespective feature of the second plurality of features is based;comparing each weight of the second plurality of weights to a thresholdweight to determine whether the respective weight is less than thethreshold weight; updating the second plurality of features to notinclude each feature to which a respective weight of the secondplurality of weights is assigned that is less than the threshold weight;updating the second plurality of weights to not include weights of thesecond plurality of weights that are less than the threshold weight;combining the first plurality of features and the second plurality offeatures to provide a third plurality of features; combining the firstplurality of weights and the second plurality of weights to provide athird plurality of weights that corresponds to the third plurality ofrespective features; and selecting an advertisement to be provided tothe first user based on the third plurality of features and the thirdplurality of respective weights in response to the first query instance.2. The method of claim 1, further comprising: comparing each historicaltime instance of the plurality of historical time instances to athreshold time instance to determine whether the respective historicaltime instance precedes the threshold time instance; and updating theplurality of historical query instances to not include each historicalquery instance that is received from the first user at a respectivehistorical time instance that precedes the threshold time instance. 3.The method of claim 1, further comprising: determining that the secondplurality of features includes at least one redundant feature, thesecond plurality of features including multiple instances of eachredundant feature; updating the second plurality of features toconsolidate the multiple instances of each redundant feature into arespective common non-redundant feature; and updating the secondplurality of weights to replace the weights of the respective instancesof each redundant feature with a respective cumulative weight that isequal to a sum of the weights of the respective instances of therespective redundant feature; wherein comparing each weight of thesecond plurality of weights to the threshold weight comprises: comparingeach weight of the second plurality of weights to the threshold weightin response to updating the second plurality of weights to replace theweights of the respective instances of each redundant feature with arespective cumulative weight that is equal to a sum of the weights ofthe respective instances of the respective redundant feature.
 4. Themethod of claim 1, further comprising: determining that the thirdplurality of features includes at least one redundant feature, the thirdplurality of features including multiple instances of each redundantfeature; updating the third plurality of features to consolidate themultiple instances of each redundant feature into a respective commonnon-redundant feature; and updating the third plurality of weights toreplace the weights of the respective instances of each redundantfeature with a respective cumulative weight that is equal to a sum ofthe weights of the respective instances of that redundant feature;wherein selecting the advertisement comprises: selecting theadvertisement to be provided to the first user in response to updatingthe third plurality of features and further in response to updating thethird plurality of weights.
 5. The method of claim 1, wherein generatingthe first plurality of features comprises: generating a first pluralityof features based on a first query instance for each user of a pluralityof users that includes the first user, each first query instance beingreceived from a respective user of the plurality of users at arespective first time instance; wherein assigning the first plurality ofweights comprises: for each user of the plurality of users, assigning arespective first plurality of weights to the respective first pluralityof respective features; wherein generating the second plurality offeatures comprises: for each user of the plurality of users, generatinga respective second plurality of features based on a respectiveplurality of historical query instances that are received from that userat a respective plurality of historical time instances that precede therespective first time instance; wherein the first query instance of thefirst user is same as a query instance in at least each of thepluralities of historical query instances of the plurality of usersother than the first user; wherein assigning the second plurality ofweights comprises: for each user of the plurality of users, assigning arespective second plurality of weights to the respective secondplurality of features, each weight of the respective second plurality ofweights based on a duration of a period of time between the referencetime instance and the historical time instance that corresponds to thehistorical query instance on which the respective feature of therespective second plurality of features is based; wherein comparing eachweight of the second plurality of weights to the threshold weightcomprises: for each user of the plurality of users, comparing eachweight of the respective second plurality of weights to the thresholdweight to determine whether the respective weight is less than thethreshold weight; wherein updating the second plurality of features tonot include each feature to which a respective weight of the secondplurality of weights is assigned that is less than the threshold weightcomprises: for each user of the plurality of users, updating therespective second plurality of features to not include each feature towhich a respective weight of the respective second plurality of weightsis assigned that is less than the threshold weight; wherein updating thesecond plurality of weights to not include weights of the secondplurality of weights that are less than the threshold weight comprises:for each user of the plurality of users, updating the respective secondplurality of weights to not include weights of the respective secondplurality of weights that are less than the threshold weight; whereincombining the first plurality of features and the second plurality offeatures comprises: for each user of the plurality of users, combiningthe respective first plurality of features and the respective secondplurality of features to provide a respective third plurality offeatures; for each feature that is included in the third plurality offeatures that corresponds to the first user, determining a number of thethird pluralities of features that include that feature; comparing thenumber that is determined for each feature that is included in the thirdplurality of features that corresponds to the first user to a numberthreshold; for each number that is less than the number threshold,removing the corresponding feature from the second plurality of featuresthat corresponds to the first user to provide a revised second pluralityof features; updating the third plurality of features that correspondsto the first user to include a combination of the first plurality offeatures that corresponds to the first user and the revised secondplurality of features; and updating the second plurality of weights thatcorresponds to the first user to not include weights that are assignedto respective features that are removed from the second plurality offeatures that corresponds to the first user; wherein combining the firstplurality of weights and the second plurality of weights comprises:combining the first plurality of weights that corresponds to the firstuser and the second plurality of weights that corresponds to the firstuser to provide the third plurality of weights that corresponds to thefirst user; and wherein selecting the advertisement comprises: selectingthe advertisement to be provided to the first user based on the thirdplurality of features that corresponds to the first user and the thirdplurality of respective weights in response to the first query instancethat is received from the first user.
 6. A method comprising: generatinga first plurality of features based on a first query instance that isreceived from a first user at a first time instance; assigning a firstplurality of weights to the first plurality of respective features;comparing each historical time instance of a plurality of historicaltime instances at which a plurality of respective historical queryinstances are received from the first user to a threshold time instanceto determine a plurality of designated query instances, the plurality ofdesignated query instances including the plurality of historical queryinstances except historical query instances of the plurality ofhistorical query instances that are received from the first user athistorical time instances that precede the threshold time instance, theplurality of historical time instances preceding the first timeinstance; generating a second plurality of features based on theplurality of designated query instances; assigning a second plurality ofweights to the second plurality of respective features, each weight ofthe second plurality of weights based on a duration of a period of timebetween a reference time instance and the historical time instance thatcorresponds to the designated query instance on which the respectivefeature of the second plurality of features is based; combining thefirst plurality of features and the second plurality of features toprovide a third plurality of features; combining the first plurality ofweights and the second plurality of weights to provide a third pluralityof weights that corresponds to the third plurality of respectivefeatures; and selecting an advertisement to be provided to the firstuser based on the third plurality of features and the third plurality ofrespective weights in response to the first query instance.
 7. Themethod of claim 6, further comprising: comparing each weight of thesecond plurality of weights to a threshold weight to determine whetherthe respective weight is less than the threshold weight; updating thesecond plurality of features to not include each feature to which arespective weight of the second plurality of weights is assigned that isless than the threshold weight; and updating the second plurality ofweights to not include weights of the second plurality of weights thatare less than the threshold weight; wherein combining the firstplurality of features and the second plurality of features comprises:combining the first plurality of features and the second plurality offeatures in response to updating the second plurality of features to notinclude each feature to which a respective weight of the secondplurality of weights is assigned that is less than the threshold weight;and wherein combining the first plurality of weights and the secondplurality of weights comprises: combining the first plurality of weightsand the second plurality of weights in response to updating the secondplurality of weights.
 8. The method of claim 6, further comprising:determining that the second plurality of features includes at least oneredundant feature, the second plurality of features including multipleinstances of each redundant feature; updating the second plurality offeatures to consolidate the multiple instances of each redundant featureinto a respective common non-redundant feature; and updating the secondplurality of weights to replace the weights of the respective instancesof each redundant feature with a respective cumulative weight that isequal to a sum of the weights of the respective instances of therespective redundant feature; wherein combining the first plurality offeatures and the second plurality of features comprises: combining thefirst plurality of features and the second plurality of features inresponse to updating the second plurality of features; and whereincombining the first plurality of weights and the second plurality ofweights comprises: combining the first plurality of weights and thesecond plurality of weights in response to updating the second pluralityof weights.
 9. The method of claim 6, further comprising: determiningthat the third plurality of features includes at least one redundantfeature, the third plurality of features including multiple instances ofeach redundant feature; updating the third plurality of features toconsolidate the multiple instances of each redundant feature into arespective common non-redundant feature; and updating the thirdplurality of weights to replace the weights of the respective instancesof each redundant feature with a respective cumulative weight that isequal to a sum of the weights of the respective instances of therespective redundant feature; wherein selecting the advertisementcomprises: selecting the advertisement to be provided to the first userin response to updating the third plurality of features and further inresponse to updating the third plurality of weights.
 10. The method ofclaim 6, wherein generating the first plurality of features comprises:generating a first plurality of features based on a first query instancefor each user of a plurality of users that includes the first user, eachfirst query instance being received from a respective user of theplurality of users at a respective first time instance; whereinassigning the first plurality of weights comprises: for each user of theplurality of users, assigning a respective first plurality of weights tothe respective first plurality of respective features; wherein comparingeach historical time instance comprises: for each user of the pluralityof users, comparing each historical time instance of a respectiveplurality of historical time instances at which a respective pluralityof historical query instances are received from a respective user to thethreshold time instance to determine a respective plurality ofdesignated query instances, each plurality of designated query instancesincluding the respective plurality of historical query instances excepthistorical query instances of the respective plurality of historicalquery instances that are received from the respective user at historicaltime instances that precede the threshold time instance, each pluralityof historical time instances preceding the respective first timeinstance; wherein generating the second plurality of features comprises:for each user of the plurality of users, generating a respective secondplurality of features based on a respective plurality of designatedquery instances; wherein the first query instance of the first user issame as a query instance in at least each of the pluralities ofdesignated query instances of the plurality of users other than thefirst user; wherein assigning the second plurality of weights comprises:for each user of the plurality of users, assigning a respective secondplurality of weights to the respective second plurality of features,each weight of the respective second plurality of weights based on aduration of a period of time between the reference time instance and thehistorical time instance that corresponds to the designated queryinstance on which the respective feature of the respective secondplurality of features is based; wherein combining the first plurality offeatures and the second plurality of features comprises: for each userof the plurality of users, combining the respective first plurality offeatures and the respective second plurality of features to provide arespective third plurality of features; for each feature that isincluded in the third plurality of features that corresponds to thefirst user, determining a number of the third pluralities of featuresthat include that feature; comparing the number that is determined foreach feature that is included in the third plurality of features thatcorresponds to the first user to a number threshold; for each numberthat is less than the number threshold, removing the correspondingfeature from the second plurality of features that corresponds to thefirst user to provide a revised second plurality of features; updatingthe third plurality of features that corresponds to the first user toinclude a combination of the first plurality of features thatcorresponds to the first user and the revised second plurality offeatures; and updating the second plurality of weights that correspondsto the first user to not include weights that are assigned to respectivefeatures that are removed from the second plurality of features thatcorresponds to the first user; wherein combining the first plurality ofweights and the second plurality of weights comprises: combining thefirst plurality of weights that corresponds to the first user and thesecond plurality of weights that corresponds to the first user toprovide the third plurality of weights that corresponds to the firstuser; and wherein selecting the advertisement comprises: selecting theadvertisement to be provided to the first user based on the thirdplurality of features that corresponds to the first user and the thirdplurality of respective weights in response to the first query instancethat is received from the first user.
 11. A system comprising: a featuregenerator configured to generate a first plurality of features based ona first query instance that is received from a first user at a firsttime instance, the feature generator further configured to generate asecond plurality of features based on a plurality of historical queryinstances that are received from the first user at a plurality ofrespective historical time instances that precede the first timeinstance; a weight assignment module configured to assign a firstplurality of weights to the first plurality of respective features, theweight assignment module further configured to assign a second pluralityof weights to the second plurality of respective features, each weightof the second plurality of weights based on a duration of a period oftime between a reference time instance and the historical time instancethat corresponds to the historical query instance on which therespective feature of the second plurality of features is based; aweight comparison module configured to compare each weight of the secondplurality of weights to a threshold weight to determine whether therespective weight is less than the threshold weight; a feature updatemodule configured to update the second plurality of features to notinclude each feature to which a respective weight of the secondplurality of weights is assigned that is less than the threshold weight;a weight update module configured to update the second plurality ofweights to not include weights of the second plurality of weights thatare less than the threshold weight; a feature combination moduleconfigured to combine the first plurality of features and the secondplurality of features to provide a third plurality of features; a weightcombination module configured to combine the first plurality of weightsand the second plurality of weights to provide a third plurality ofweights that corresponds to the third plurality of respective features;and an ad selection module configured to select an advertisement to beprovided to the first user based on the third plurality of features andthe third plurality of respective weights in response to the first queryinstance.
 12. The system of claim 11, further comprising: a timecomparison module configured to compare each historical time instance ofthe plurality of historical time instances to a threshold time instanceto determine whether the respective historical time instance precedesthe threshold time instance; and an instance update module configured toupdate the plurality of historical query instances to not include eachhistorical query instance that is received from the first user at arespective historical time instance that precedes the threshold timeinstance.
 13. The system of claim 11, further comprising: a redundancydetermination module configured to determine whether the secondplurality of features includes multiple instances of at least oneredundant feature; wherein the feature update module is furtherconfigured to update the second plurality of features to consolidate themultiple instances of each redundant feature into a respective commonnon-redundant feature; wherein the weight update module is furtherconfigured to update the second plurality of weights to replace theweights of the respective instances of each redundant feature with arespective cumulative weight that is equal to a sum of the weights ofthe respective instances of the respective redundant feature; andwherein the weight comparison module is configured to compare eachweight of the second plurality of weights to the threshold weight inresponse to the second plurality of weights being updated to replace theweights of the respective instances of each redundant feature with arespective cumulative weight that is equal to a sum of the weights ofthe respective instances of the respective redundant feature.
 14. Thesystem of claim 11, further comprising: a redundancy determinationmodule configured to determine whether the third plurality of featuresincludes multiple instances of at least one redundant feature; whereinthe feature update module is further configured to update the thirdplurality of features to consolidate the multiple instances of eachredundant feature into a respective common non-redundant feature; andwherein the weight update module is further configured to update thethird plurality of weights to replace the weights of the respectiveinstances of each redundant feature with a respective cumulative weightthat is equal to a sum of the weights of the respective instances ofthat redundant feature; wherein the ad selection module is configured toselect the advertisement to be provided to the first user in response tothe third plurality of features and the third plurality of weights beingupdated.
 15. The system of claim 11, wherein the feature generator isconfigured to generate a first plurality of features based on a firstquery instance for each user of a plurality of users that includes thefirst user, each first query instance being received from a respectiveuser of the plurality of users at a respective first time instance;wherein the feature generator is further configured to generating, foreach user of the plurality of users, a respective second plurality offeatures based on a respective plurality of historical query instancesthat are received from that user at a respective plurality of historicaltime instances that precede the respective first time instance; whereinthe first query instance of the first user is same as a query instancein at least each of the pluralities of historical query instances of theplurality of users other than the first user; wherein the weightassignment module is configured to assign, for each user of theplurality of users, a respective first plurality of weights to therespective first plurality of respective features; wherein the weightassignment module is further configured to assign, for each user of theplurality of users, a respective second plurality of weights to therespective second plurality of features, each weight of the respectivesecond plurality of weights based on a duration of a period of timebetween the reference time instance and the historical time instancethat corresponds to the historical query instance on which therespective feature of the respective second plurality of features isbased; wherein the weight comparison module is configured to compare,for each user of the plurality of users, each weight of the respectivesecond plurality of weights to the threshold weight to determine whetherthe respective weight is less than the threshold weight; wherein thefeature update module is configured to update, for each user of theplurality of users, the respective second plurality of features to notinclude each feature to which a respective weight of the respectivesecond plurality of weights is assigned that is less than the thresholdweight; wherein the weight update module is configured to update, foreach user of the plurality of users, the respective second plurality ofweights to not include weights of the respective second plurality ofweights that are less than the threshold weight; wherein the featurecombination module is configured to combine, for each user of theplurality of users, the respective first plurality of features and therespective second plurality of features to provide a respective thirdplurality of features; wherein the system further comprises: a numberdetermination module that is configured to determine, for each featurethat is included in the third plurality of features that corresponds tothe first user, a number of the third pluralities of features thatinclude that feature; and a number comparison module that is configuredto compare the number that is determined for each feature that isincluded in the third plurality of features that corresponds to thefirst user to a number threshold; wherein the feature update module isfurther configured to remove, for each number that is less than thenumber threshold, the corresponding feature from the second plurality offeatures that corresponds to the first user to provide a revised secondplurality of features; wherein the feature update module is furtherconfigured to update the third plurality of features that corresponds tothe first user to include a combination of the first plurality offeatures that corresponds to the first user and the revised secondplurality of features; wherein the weight update module is furtherconfigured to update the second plurality of weights that corresponds tothe first user to not include weights that are assigned to respectivefeatures that are removed from the second plurality of features thatcorresponds to the first user; wherein the weight combination module isconfigured to combine the first plurality of weights that corresponds tothe first user and the second plurality of weights that corresponds tothe first user to provide the third plurality of weights thatcorresponds to the first user; and wherein the ad selection module isconfigured to select the advertisement to be provided to the first userbased on the third plurality of features that corresponds to the firstuser and the third plurality of respective weights in response to thefirst query instance that is received from the first user.
 16. A systemcomprising: a time comparison module configured to compare eachhistorical time instance of a plurality of historical time instances atwhich a plurality of respective historical query instances are receivedfrom a first user to a threshold time instance to determine a pluralityof designated query instances, the plurality of designated queryinstances including the plurality of historical query instances excepthistorical query instances of the plurality of historical queryinstances that are received from the first user at historical timeinstances that precede the threshold time instance; a feature generatorconfigured to generate a first plurality of features based on a firstquery instance that is received from the first user at a first timeinstance, the feature generator further configured to generate a secondplurality of features based on the plurality of designated queryinstances, the plurality of historical time instances preceding thefirst time instance; a weight assignment module configured to assign afirst plurality of weights to the first plurality of respectivefeatures, the weight assignment module further configured to assign asecond plurality of weights to the second plurality of respectivefeatures, each weight of the second plurality of weights based on aduration of a period of time between a reference time instance and thehistorical time instance that corresponds to the designated queryinstance on which the respective feature of the second plurality offeatures is based; a feature combination module configured to combinethe first plurality of features and the second plurality of features toprovide a third plurality of features; a weight combination moduleconfigured to combine the first plurality of weights and the secondplurality of weights to provide a third plurality of weights thatcorresponds to the third plurality of respective features; and an adselection module configured to select an advertisement to be provided tothe first user based on the third plurality of features and the thirdplurality of respective weights in response to the first query instance.17. The system of claim 16, further comprising: a weight comparisonmodule configured to compare each weight of the second plurality ofweights to a threshold weight to determine whether the respective weightis less than the threshold weight; a feature update module configured toupdate the second plurality of features to not include each feature towhich a respective weight of the second plurality of weights is assignedthat is less than the threshold weight; and a weight update moduleconfigured to update the second plurality of weights to not includeweights of the second plurality of weights that are less than thethreshold weight; wherein the feature combination module is configuredto combine the first plurality of features and the second plurality offeatures in response to the second plurality of features being updatedto not include each feature to which a respective weight of the secondplurality of weights is assigned that is less than the threshold weight;and wherein the weight combination module is configured to combine thefirst plurality of weights and the second plurality of weights inresponse to the second plurality of weights being updated.
 18. Thesystem of claim 16, further comprising: a redundancy determinationmodule configured to determine whether the second plurality of featuresincludes multiple instances of at least one redundant feature; a featureupdate module configured to update the second plurality of features toconsolidate the multiple instances of each redundant feature into arespective common non-redundant feature; and a weight update moduleconfigured to update the second plurality of weights to replace theweights of the respective instances of each redundant feature with arespective cumulative weight that is equal to a sum of the weights ofthe respective instances of the respective redundant feature; whereinthe feature combination module is configured to combine the firstplurality of features and the second plurality of features in responseto the second plurality of features being updated; and wherein theweight combination module is configured to combine the first pluralityof weights and the second plurality of weights in response to the secondplurality of weights being updated.
 19. The system of claim 16, furthercomprising: a redundancy determination module configured to determinewhether the third plurality of features includes multiple instances ofat least one redundant feature; a feature update module configured toupdate the third plurality of features to consolidate the multipleinstances of each redundant feature into a respective commonnon-redundant feature; and a weight update module configured to updatethe third plurality of weights to replace the weights of the respectiveinstances of each redundant feature with a respective cumulative weightthat is equal to a sum of the weights of the respective instances of therespective redundant feature; wherein the ad selection module isconfigured to select the advertisement to be provided to the first userin response to the third plurality of features and the third pluralityof weights being updated.
 20. The system of claim 16, the timecomparison module is configured to compare, for each user of a pluralityof users that includes the first user, each historical time instance ofa respective plurality of historical time instances at which arespective plurality of historical query instances are received from arespective user to the threshold time instance to determine a respectiveplurality of designated query instances, each plurality of designatedquery instances including the respective plurality of historical queryinstances except historical query instances of the respective pluralityof historical query instances that are received from the respective userat historical time instances that precede the threshold time instance;wherein the feature generator is configured to generate a firstplurality of features based on a first query instance for each user ofthe plurality of users, each first query instance being received from arespective user of the plurality of users at a respective first timeinstance; wherein the feature generator is further configured togenerate, for each user of the plurality of users, a respective secondplurality of features based on a respective plurality of designatedquery instances; wherein the first query instance of the first user issame as a query instance in at least each of the pluralities ofdesignated query instances of the plurality of users other than thefirst user; wherein the weight assignment module is configured toassign, for each user of the plurality of users, a respective firstplurality of weights to the respective first plurality of respectivefeatures; wherein the weight assignment module is further configured toassign, for each user of the plurality of users, a respective secondplurality of weights to the respective second plurality of features,each weight of the respective second plurality of weights based on aduration of a period of time between the reference time instance and thehistorical time instance that corresponds to the designated queryinstance on which the respective feature of the respective secondplurality of features is based; wherein the feature combination moduleis configured to combine, for each user of the plurality of users, therespective first plurality of features and the respective secondplurality of features to provide a respective third plurality offeatures; wherein the system further comprises: a number determinationmodule configured to determine, for each feature that is included in thethird plurality of features that corresponds to the first user, a numberof the third pluralities of features that include that feature; a numbercomparison module configured to compare the number that is determinedfor each feature that is included in the third plurality of featuresthat corresponds to the first user to a number threshold; a featureupdate module configured to remove, for each number that is less thanthe number threshold, the corresponding feature from the secondplurality of features that corresponds to the first user to provide arevised second plurality of features, the feature update module furtherconfigured to update the third plurality of features that corresponds tothe first user to include a combination of the first plurality offeatures that corresponds to the first user and the revised secondplurality of features; and a weight update module configured to updatethe second plurality of weights that corresponds to the first user tonot include weights that are assigned to respective features that areremoved from the second plurality of features that corresponds to thefirst user; wherein the feature combination module is configured tocombine the first plurality of weights that corresponds to the firstuser and the second plurality of weights that corresponds to the firstuser to provide the third plurality of weights that corresponds to thefirst user; and wherein the ad selection module is configured to selectthe advertisement to be provided to the first user based on the thirdplurality of features that corresponds to the first user and the thirdplurality of respective weights in response to the first query instancethat is received from the first user.